home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / GRAPHICS / FADERS.ZIP / FADE.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-08-21  |  1.5 KB  |  106 lines

  1. ;
  2. ; Da Smallest Fade-in and Fade-out routine.
  3. ;
  4.  
  5. ideal
  6. p286n
  7.  
  8. segment code
  9. assume cs:code
  10.  
  11. org 100h
  12.  
  13. Start:        call write_palette
  14.         push 0b800h
  15.         pop es
  16.         mov si,offset Screen
  17.         mov di,0
  18.         mov cx,1322
  19.         call uncrunch        
  20.  
  21.  
  22.         mov bp,31
  23. fade_in_loop:    call fade_in
  24.         call write_palette
  25.         dec bp
  26.         jnz fade_in_loop
  27.         
  28.         xor ax,ax
  29.         int 16h
  30.  
  31.         mov bp,31
  32. fade_out_loop:    call fade_out
  33.         call write_palette
  34.         dec bp
  35.         jnz fade_out_loop
  36.                 
  37.         mov ax,3
  38.         int 10h
  39.         mov ax,4c00h
  40.         int 21h
  41.  
  42. proc            fade_in
  43.         mov bx,0
  44. @@fade1:        mov al,[palette+bx]
  45.         mov dl,[pal_buf+bx]
  46.         sub al,dl
  47.         cmp al,0
  48.         je no_inc
  49.         cmp al,1
  50.         je @@f1
  51.         inc [pal_buf+bx]
  52. @@f1:
  53.         inc [pal_buf+bx]
  54. no_inc:        inc bx
  55.         cmp bx,768
  56.         jne @@fade1
  57.         ret
  58. endp            fade_in
  59.  
  60. proc            fade_out
  61.         mov bx,0
  62. @@fade2:        cmp [pal_buf+bx],0
  63.         je no_dec
  64.         cmp [pal_buf+bx],1
  65.         je @@f2
  66.         dec [pal_buf+bx]
  67. @@f2:        dec [pal_buf+bx]        
  68. no_dec:        inc bx
  69.         cmp bx,768
  70.         jne @@fade2
  71.         ret
  72. endp        fade_out
  73.  
  74. proc        write_palette
  75.         mov dx, 03DAh              
  76.     v1:
  77.             in    al, dx
  78.             test   al,08h
  79.             jnz    v1
  80.     v2:
  81.             in     al, dx
  82.             test   al,08h
  83.                 jz     v2
  84.  
  85.         mov dx,3c8h
  86.         lea si,[pal_buf]
  87.         mov cx,768
  88.         xor al,al
  89.         out dx,al
  90.         inc dx
  91.         rep outsb
  92.         ret
  93. endp         write_palette
  94.  
  95.         include "p_uncrnh.inc"
  96.         include "screen.inc"
  97.         include "palette.inc"
  98.         pal_buf db 768 dup(0)                
  99.  ends code
  100. end start
  101.  
  102.  
  103.  
  104.  
  105.  
  106.